/**
 * @file item_manager.h
 * @author yonglin_zhang
 * @brief 分支节点、仓库节点管理
 * @version 0.1
 * @date 2023-07-24
 * 
 * @copyright Copyright (c) 2023
 * 
 */

#ifndef ITEM_MANAGER_H
#define ITEM_MANAGER_H

#include "cJSON.h"
#include "cicd_config.h"

typedef struct _repo repo_handler;

/**
 * @brief 打印所有信息
 * 
 * @param handler 
 */
void debug_show_all(repo_handler *handler);

/**
 * @brief 初始化仓库句柄（带头结点）
 * 
 * @param handler
 */
void repo_init(repo_handler **handler);

/**
 * @brief 根据仓库名和json串更新分支节点以及对应分支节点的状态
 * 
 * @note 如果没有当前仓库名则会将仓库添加进入，分支的更新则根据json进行，包含添加和删除(远程分支的删除)
 * 
 * @param handler 仓库句柄
 * @param repo 仓库名
 * @param json json串
 */
void repo_update_by_json(repo_handler *handler, const char *repo, cJSON *json);

/**
 * @brief 使用仓库数据更新消息队列
 * 
 * @param handler 仓库句柄
 */
void repo_update_mq(repo_handler *handler);

/**
 * @brief 释放仓库句柄
 * 
 * @param handler 
 */
void repo_free(repo_handler **handler);

#endif